package servlets;

import java.io.IOException;
import java.text.ParseException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import utiles.FuncionesImpl;

import capaLogica.Ciudad;
import capaLogica.CiudadBO;
import capaLogica.Evento;
import capaLogica.EventoBO;
import capaLogica.PerfilBO;
import capaLogica.PerfilConcurso;
import capaLogica.PerfilFestival;
import capaLogica.PerfilGrupo;
import capaLogica.PerfilSala;

/**
 * Servlet implementation class BusquedaCO
 */
public class BusquedaCO extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BusquedaCO() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request,response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String accion = request.getParameter("accion");
		try {
			procesarAccion(accion, request, response);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void procesarAccion(String accion, HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException, ParseException {
		if (accion.equals("busquedaSimple")) {
			listarResultadosSimples(request, response);
		}else if ( accion.equals("busquedaDetallada")){
			listaResultadoComplejos(request,response);
		}else if ( accion.equals("paginaBusqueda") ){
			paginaPrincipal(request,response);
		}
	}

	private void listaResultadoComplejos(HttpServletRequest request,
			HttpServletResponse response) throws ParseException, ServletException, IOException {
		
		String ciudad = request.getParameter("ciudades");
		String fecha = request.getParameter("fechaEvento");
		
		EventoBO eBO = new EventoBO();
		Evento e = new Evento();
		if ( "".equals(fecha) ){
			e.setFechaEvento(null);
		}else{
			e.setFechaEvento(FuncionesImpl.getStringAsFecha(fecha));
		}
		e.setIdCiudad(ciudad);
		List<Evento> listaEventos = eBO.recuperaEventoBusqueda(e);
		
		request.setAttribute("listaEventos", listaEventos);
		
		request.getRequestDispatcher("listarBusquedaCompleja.jsp").include(request, response);
		
	}

	private void listarResultadosSimples(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String nombrePerfil = request.getParameter("nombreUsuarioSimple");
		PerfilBO perfilBO = new PerfilBO();
		
		List<PerfilGrupo> listaGrupo = perfilBO.recuperarPerfilGrupoByNombre(nombrePerfil);
		List<PerfilSala> listaSala = perfilBO.recuperarPerfilSalaByNombre(nombrePerfil);
		List<PerfilFestival> listaFestival = perfilBO.recuperarPerfilFestivalByNombre(nombrePerfil);
		List<PerfilConcurso> listaConcurso = perfilBO.recuperarPerfilConcursoByNombre(nombrePerfil);
		
		request.setAttribute("listaGrupo",listaGrupo);
		request.setAttribute("listaSala", listaSala);
		request.setAttribute("listaFestival", listaFestival);
		request.setAttribute("listaConcurso", listaConcurso);
		
		request.getRequestDispatcher("listaResultadosBusqueda.jsp").include(request, response);
		
		
	}

	private void paginaPrincipal(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		CiudadBO ciudadesBO = new CiudadBO();
		List<Ciudad> listaCiudades = ciudadesBO.recuperarTodas();
		request.setAttribute("ciudades", listaCiudades);
		request.getRequestDispatcher("busqueda.jsp").include(request, response);
	}

}
